package cn.xzqwjw.taskmanager.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * Mybatis-plus 的配置
 * EnableTransactionManagement 开启 Mybatis-plus 事务管理
 * MapperScan("info.xzqtsg.rushbms.repository.mapper")
 * 开启 MyBatis-Plus 自动扫描sqlMapper，也可以在 startApplication.java开始时注解
 * 二种方式选一种，如果同时开，会提示重复错误
 *
 * @author rush
 */
@Configuration
@MapperScan("cn.xzqwjw.taskmanager.repository")
@EnableTransactionManagement
public class MybatisPlusConfig {

  /**
   * 新版的分页，sql如果有join 查询，会报没有取别名的错误
   */
  @Bean
  public MybatisPlusInterceptor setPaginationInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    // 不设置方言，MP会自动设置
    PaginationInnerInterceptor pii = new PaginationInnerInterceptor();
    // 设置请求的页面大于最大页后操作，true 调回到首页，false 继续请求 默认false
    pii.setOverflow(false);
    // 开启 count 的 join 优化, 只针对部分 left join
    pii.setOptimizeJoin(true);
    // 设置最大单页限制数量，默认 500 条，-1 不受限制
    pii.setMaxLimit(200L);
    interceptor.addInnerInterceptor(pii);
    return interceptor;
  }

}
